package framework.forms;

import junit.framework.Assert;

import org.openqa.selenium.By;

import framework.elements.Label;
import framework.partitions.BasePartition;

/** Форма сведений об организации
 */
public class ProsmotrSvedeniyObOrganizaciiFrom extends BaseOrganizationForm{

	/** Базовый конструктор.
	 */
	protected ProsmotrSvedeniyObOrganizaciiFrom() {
		super(By.xpath("//div[@id='tabtable']//p[contains(.,'анные организации')]"), "Регистрационные данные организации");
	}

	private final String tabTemplate = "//div[@class='tabs']//li/span/a[contains(.,'%s')]";
	private final String selectedTabTemplate = "//div[@class='tabs']//li[@class='active']/span/a[contains(.,'%s')]";
	private Label orgStatus = new Label(By.xpath("//div[@class='tablet']/table[1]/tbody/tr[1]/td[2]/span"), "Статус организации");
	// Раздел "Регистрационные данные организации
	private final int fieldOgrn = 3;
	private final int fieldAddress = 6;
	/**
	 * Открывает вкладку 'Полномочия организации'
	 */
	public final void openPolnomochiyaTab(){
		Label tab = new Label(By.xpath(String.format(tabTemplate, "Полномочия организации")), "Вкладка 'Полномочия организации'");
		Label selectedtab = new Label(By.xpath(String.format(selectedTabTemplate, "Полномочия организации")), "Выбранная вкладка 'Полномочия организации'");
		if(!selectedtab.isPresent()){
			tab.waitAndClick();
			selectedtab.waitAndAssertIsPresent();
		}
	}

	/** Проверяет статус организации
	 * @param expStatus ожидаемый статус
	 */
	public final void assertOrgStatus(final String expStatus){
		orgStatus.waitAndAssertIsPresent();
		Assert.assertEquals("Статус организации содержит некорректное значение", expStatus, orgStatus.getText());
		logger.info("Статус организации содержит корректное значение: " + orgStatus.getText());
	}

	/** Возвращает огрн организации
	 * @return огрн
	 */
	public String getOgrn(){
		BasePartition partRegData = new BasePartition("//div[@class='%s']/table[%s]/tbody", "tablet", "Регистрационные данные организации");
		return partRegData.getText(fieldOgrn, "/span", "ОГРН");
	}

	/** Возвращает адрес организации
	 * @return адрес организации
	 */
	public String getAddress(){
		BasePartition partRegData = new BasePartition("//div[@class='%s']/table[%s]/tbody", "tablet", "Регистрационные данные организации");
		return partRegData.getText(fieldAddress, "/span", "Адрес");
	}
}
